// jwt json web token  
// 通过对用户信息加密返回给客户端，客户端配置Authorization = jwt
// 服务器使用express-jwt进行解析 授权
const express=require('express')
const cors=require('cors')
const jwt=require('jsonwebtoken')
const {expressjwt:expressJWT}=require('express-jwt')
const secret='fighting wl! ^-^'
const app=express()

//设置跨域
app.use(cors())
//设置form信息解析
app.use(express.urlencoded({extended:false}))
//设置JWT解析 指定/api开头的不需要访问权限 先通过不要权限的接口设置权限 后面才能访问
app.use(expressJWT({secret:secret,algorithms:['HS256']}).unless({path:[/^\/api\//]}))

app.post('/api/login',(req,res)=>{
    if(req.body.username!=='admin'&&req.body.password!=='123'){
        return res.send({
            status:'403',
            msg:'禁止访问'
        })
    }
    const user=req.body
    //对用户信息进行加密
     const tokenStr=jwt.sign({username:user.username},secret,{expiresIn:'30s'})

     res.send({
        status:'200',
        msg:'登录成功',
        token:tokenStr
     })
})

app.post('/nologin',(req,res)=>{
    //当jwtsign成功req里会多一个auth用户信息
res.send({
    status:'200',
    msg:'获取用户信息成功',
    data:req.auth
})
})
//捕获jwt过期信息
app.use((error,req,res,next)=>{
  if(error){
     return res.send({
        msg:'token失效，请重新登录'
     })
  }
})
app.listen('80',()=>{
    console.log('服务启动了，http://127.0.0.1:80')
})




